 #pragma once
#include"INet.h"

class TcpClient :public INet
{
public:
	TcpClient(INetMediator* pMediator);
	~TcpClient();
	bool InitNet();
	//关闭网络
	void UnInitNet();
	//发送数据
	bool SendData(long ISendIp, char* buf, int nLen);//IP地址,BUf(具体发生数据的内容),长度

protected:
	//接收数据
	void RecvData();
	//线程为什么要定义成static 因为非静态成员函数都会在参数列表中加上一个this指针为为参数
	/*比如 DWORD WINAPI ThreadFun(LPVOID); 是非静态的, 实际编译后, 就会变成
		DWORD WINAPI ThreadFun(LPVOID, CMyClass* this);
	这个函数就明显不能作为线程的函数了, 因为多了个参数.所以编译就过不了了.*/
	static unsigned int __stdcall RecvThread(void* lpvoid);
	SOCKET m_sock;
	HANDLE m_hThreadHandle;
	bool  m_isStop;
};
